package com.bl.andr.utillib;

import java.util.List;

/**
 * 字符串工具类
 * Created by Baby on 2015-11-8.
 */
public class StrUtil {

    public static String filterEmpty(String str) {
        return filterEmpty(str, "");
    }

    public static String filterEmpty(String str, String defaultStr) {
        if (EmptyUtil.isEmpty(str)) {
            return defaultStr;
        }
        return str;
    }


    public static boolean isEquals(String str1, String str2) {
        return EmptyUtil.isNotEmpty(str1) && EmptyUtil.isNotEmpty(str2) && str1.equals(str2);
    }

    public static String subString(String str, int start, int end) {

        if (EmptyUtil.isNotEmpty(str) && str.length() >= end && start <= end) {
            return str.substring(start, end);
        }
        return "";
    }


    public static String replaceAll(String str, String oldStr, String newStr) {
        if (EmptyUtil.isEmpty(str)) {
            return "";
        }
        if (str.contains(oldStr)) {
            return str.replaceAll(oldStr, newStr);
        }
        return str;
    }


    /**
     * 将字符串列表 用逗号隔开 组合成新的字符串
     *
     * @param list
     * @return
     */
    public static String insertDot(List<String> list) {
        return insert(list, ",");
    }

    /**
     * 将字符串列表 用逗号或别的符号隔开 组合成新的字符串
     *
     * @param list 字符串列表
     * @param reg  要隔开的符号
     * @return
     */
    public static String insert(List<String> list, String reg) {
        if (EmptyUtil.isEmpty(list)) return "";
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            sb.append(reg).append(list.get(i));
        }
        return subPrefix(sb.toString(), reg);
    }

    /**
     * 截取前缀 第一个 ，逗号
     */
    public static String subPrefix(String str) {
        return subPrefix(str, ",");
    }

    public static String subPrefix(String str, String reg) {
        if (EmptyUtil.isNotEmpty(str) && str.startsWith(reg)) {
            str = str.substring(reg.length());
        }
        return str;
    }

    /**
     * 截取后缀
     *
     * @param str
     * @return
     */
    public static String subSuffix(String str) {
        return subSuffix(str, ",");
    }

    public static String subSuffix(String str, String reg) {
        if (EmptyUtil.isNotEmpty(str) && str.endsWith(reg)) {
            str = str.substring(0, str.length() - reg.length());
        }
        return str;
    }


    /**
     * 判断str是否为null或者0或者0.00或者0.0000
     *
     * @param str
     * @return
     *//*
    public static boolean isEmptyOr0(String str) {
        if (isEmpty(str)) {
            return true;
        }
        Double d = MathUtil.convert2Double(str, 0.00);
        return d == 0;
    }


    *//**
     * 用splitIcon分割数组，拼接成一个字符串
     *
     * @param strs
     * @param splitIcon
     * @return
     *//*
    public static String jointStr(String[] strs, String splitIcon) {
        StringBuilder builder = new StringBuilder();
        if (strs.length <= 1) {
            return strs[0];
        }
        for (int i = 0; i < strs.length; i++) {
            builder = builder.append(strs[i]);
            if (i < strs.length - 1) {
                builder.append(splitIcon);
            }
        }
        return builder.toString();
    }


    *//**
     * 将字符串根据isShowZ是否转成带加号的并且进行格式化，负数字符串和为0的字符串不作处理
     *
     * @param str         比如：1.00  -2.00  0.00
     * @param defaultStr  当字符串为null时默认返回值
     * @param isShowZ     是否需要判断正数，并加上“+”
     * @param percentSign 是否添加“%”
     * @return 格式化为**,***.**
     *//*
    public static String jointZF(String str, String defaultStr, boolean isShowZ, boolean percentSign) {
        String fStr = "";
        if (StrUtil.isEmpty(str)) {
            fStr = defaultStr;
            //如果defaultStr不是数值型的字符串就不用添加%号了
            if (-1111 == MathUtil.convertToDouble(fStr, -1111)) {
                percentSign = false;
            }
        } else if (iszhengshu(str) && isShowZ) {
            fStr = "+" + MathUtil.formatDouble("", str);
        } else {
            fStr = MathUtil.formatDouble("", str);
        }
        if (percentSign) {
            fStr += "%";
        }
        return fStr;
    }

    private static final int color_4F = Color.parseColor("#4F4F4F");
    private static final int color_num_z = Color.parseColor("#FF5532");
    private static final int color_num_f = Color.parseColor("#28CF6A");

    *//**
     * 将字符串转成带加号的，负数字符串和为0的字符串不作处理
     * 正数的将TextView设置成红色，0为黑色，负数为绿色
     *
     * @param str         比如：1.00  -2.00  0.00
     * @param defaultStr  当字符串为null时默认返回值
     * @param tv
     * @param percentSign 是否添加“%”,如果defaultStr不是数值型，如“--”则不添加
     * @return
     *//*
    public static String jointZF(String str, String defaultStr, TextView tv, boolean percentSign) {
        return jointZF(str, defaultStr, tv, color_4F, color_num_z, color_num_f, true, percentSign);
    }

    *//**
     * 将字符串颜色进行更改,字符串原样输出
     * 正数的将TextView设置成红色，0为黑色，负数为绿色
     *
     * @param str         比如：1.00  -2.00  0.00
     * @param defaultStr  当字符串为null时默认返回值（可以是任意字符）
     * @param tv
     * @param percentSign 是否添加“%”，如果defaultStr不是数值型，如“--”则不添加
     * @return
     *//*
    public static String jointColor(String str, String defaultStr, TextView tv, boolean percentSign) {
        return jointZF(str, defaultStr, tv, color_4F, color_num_z, color_num_f, false, percentSign);
    }

    *//**
     * 将字符串转成带加号的，负数字符串和为0的字符串不作处理
     * 正数的将TextView设置成 zColor，0为zeroColor，负数为fColor
     *
     * @param str         比如：1.00  -2.00  0.00
     * @param defaultStr  当字符串为null时默认返回值（不一定是数值型）
     * @param tv
     * @param zeroColor   0或默认字符时的色值  :R.color.XXX
     * @param zColor      正数时的色值 :R.color.XXX
     * @param fColor      负数的色值 :R.color.XXX
     * @param isShowZ     正数是否需要前面加“+”
     * @param percentSign true 后面添加“%” false 不添加  如果defaultStr不是数值型，如“--”则忽略该变量。不添加
     * @return
     *//*
    public static String jointZF(String str, String defaultStr, TextView tv, int zeroColor, int zColor, int fColor, boolean isShowZ, boolean percentSign) {

        Double d = MathUtil.convertToDouble(str, 0.00);
        if (d == 0) {
            tv.setTextColor(zeroColor);
        } else if (d < 0) {
            tv.setTextColor(fColor);
        } else {
            tv.setTextColor(zColor);
        }
        return jointZF(str, defaultStr, isShowZ, percentSign);
    }

    *//**
     * 判断double类型的字符串是否是正数
     *
     * @param str
     * @return
     *//*
    public static boolean iszhengshu(String str) {
        if (StrUtil.isEmpty(str)) {
            return false;
        }
        Double d = MathUtil.convertToDouble(str, 0.00);
        if (d <= 0) {
            return false;
        } else {
            return true;
        }
    }

    *//**
     * 拼接金额字段
     *
     * @param money
     * @param replaceStr 当为0或null时显示的文案
     * @return
     *//*
    public static String moneyIs0(String money, String replaceStr) {
        String str = money + "元";
        if (StrUtil.isEmptyOr0(money)) {
            str = replaceStr;
        }
        return str;
    }*/
// *************************************************************************
//  脱敏处理
// *************************************************************************

    /**
     * 格式化银行卡号
     *
     * @param cardNo
     * @return
     */
    public static String formatBankCode(String cardNo) {
        cardNo = cardNo.replaceAll("\\s*", "");
        int length = cardNo.length();
        if (length % 4 == 0) ;
        cardNo += " ";
        return cardNo;
    }

    /**
     * 格式化手机号
     *
     * @param phoneNumber
     * @return
     */
    public static String formatPhoneNum(String phoneNumber) {
        String phoneNum;
        if (EmptyUtil.isEmpty(phoneNumber)) {
            return "";
        }
        phoneNum = subString(phoneNumber, 0, 3) + " **** " + subString(phoneNumber, 7, phoneNumber.length());
        return phoneNum;
    }


}

